A conventional process is described in an article by Bernd Ackermann, "Requirements of a real-time operating system for embedded systems," Elektronik, no. 18 (1992) pp. 120-128, which discusses features of controllers containing real-time operating systems for microprocessors. A process manager program is responsible for sequencing control. It controls the allocation of the CPU and coordinates all the programs (tasks) being run. The process manager allows quasi-parallel processing of several tasks (multitasking). For this purpose the process manager is designed so that it can interrupt a program currently being run at any time and can start a task having a higher priority for the system as a whole. The interrupted program is continued by the process manager when the processing of higher-priority programs is concluded. In this type of sequencing control, it is important that a task currently being run can be interrupted at any time. This procedure is also known as "preemptive scheduling or preemptive multitasking."
The sequencing control described above relates to real-time systems, e.g., control systems that must perform certain control processes within defined time limits, because this permits a rapid reaction to certain events.
However, a task can be interrupted at any point, which results in high management and memory demands. Since an interrupted task should be continued later at the point of interruption, information indicating the processing status must be saved for the interrupted task. This includes the program counter status, the contents of the status register, the contents of the computation register, etc. Furthermore, the temporary data of the interrupted task stored in the stack must be saved while extra space must be reserved in the stack memory for temporary data of the interrupting task. Since there can be several nested interruptions in the sequencing control, this process requires a large amount of storage space for the stack memory.
It is also difficult to exchange information between the interrupted and interrupting tasks. If both tasks access the same memory areas for this purpose, data may be lost or corrupted in some cases, depending on the location of the interruption. These cases are often difficult to detect in practice, and providing protection against them requires complex methods for synchronizing data access. As an alternative, separate memory areas can be used, in which case it is necessary to provide communication mechanisms which are also complex.